# 实现院系部门板块的各种验证功能
import re
# 用于验证日期
from django.utils import timezone


def valid_created_time(created_time):
    """验证成立时间是否符合逻辑"""
    # 一般来说，成立时间应小于当前时间。除非网站需求允许加入待成立的社团或部门
    if created_time > timezone.localdate():
        return '成立时间存在逻辑或格式错误，样例：2000/01/01，且不是将来的某一天'
    else:
        return ''


def valid_contact(contact):
    """验证预留的联系号码格式是否正确"""
    # 联系电话为可选字段，当字段为空时
    if not contact:
        return ''

    # 当字段不为空时，匹配带区号或不带区号的中国手机电话或固定电话
    regex = re.compile(
        r'(^((\+86-)|(86-))?1[3-9]\d{9}$)|(^(\d{3,4}-)?\s?\d{7,8}$)'
    )
    if regex.match(contact.strip()):
        return ''
    else:
        return '电话号码格式有误，目前支持带区号的中国固定电话号码和移动电话号码'


def valid_logo_image(image):
    """验证图像格式是否正确"""
    # 获取图像文件后缀名
    suffix = image.name.split('.')[-1]
    if suffix.lower() not in ('jpeg', 'tiff', 'png', 'bmp', 'gif', 'jpg',):
        return '请上传正确的图像格式，支持jpeg(jpg) tiff png bmp gif格式的图片'
    else:
        return ''


def valid_email(email):
    """验证邮箱格式是否正确"""
    regex = re.compile(r'[a-zA-Z0-9]+@[a-zA-Z0-9]+\.[a-z]+')
    if regex.match(email.strip()):
        return ''
    else:
        return '邮箱格式不正确'


def is_valid_image(image):
    # 如果有错误提示，表明验证失败
    if valid_logo_image(image):
        return False
    else:
        return True
